var featureLoaded = true;
var currentPostMode = '';
var postTooManyCharacters = new Array();

$(document).ready(function() {

	$("#toggleCreateCheck").click(function() {
		$('#createCheck').toggle('slow', function() {
		});
		return false;
	});
	
	$(".checkTableRow").click(function() {
		id = $("input", this).val();
		
		loadPage("挙手表示", id);
	});
	
	$(".voteTableRow").click(function() {
		id = $("input", this).val();
		
		loadPage("アンケート表示", id);
		
	});
});

// 読み込みが終わってから呼ばれる関数
function featurePageLoaded(page) {
	switch (page) {
		case 'feature.tab':
			attendanceCheckPerformed = $("input[name=attendance_check_performed]").val() == "true";

			$(".featureTop,.featureMain").hover(
				function() {
					div = $(this).parent();
					if (div.hasClass("enabled") || attendanceCheckPerformed)
						$(".featureTop,.featureMain", div).addClass("featureOver");
				},
				function() {
					div = $(this).parent();
					if (div.hasClass("enabled") || attendanceCheckPerformed)
						$(".featureTop,.featureMain", div).removeClass("featureOver");
				}
			);
			$(".featureTop:not(.enabled),.featureMain:not(.enabled)").click(
				function() {
					div = $(this).parent();
					if (div.hasClass("enabled") || attendanceCheckPerformed) {
						feature = $(".featureTop", div).html();
					
						if (feature == "投稿") {
							showTweetWindow();
						}
						else {
							loadPage(feature);
						}
					}
				}
			);			
			break;
		case 'history':
			$("tr.historyTableRow:visible").click(historyRowClick);
			break;
	}
}

// ツイート作成の窓を表示する
function showTweetWindow() {
	data = "request_page=tweet_post";
	
	$.ajax ({
		type: "GET",
		url: "ajax.php",
		data: data,
		success: function (result) {
			$("#dialog").html(result);
			$("#dialog").dialog ({
			
				autoOpen: true,
				title: "投稿",
				height: 550,
				position: [350, 130],
				width: 480,
				modal: true,
				resizable: false,
				buttons: {
					"キャンセル": function() {
						currentPostMode = false;
						$( this ).dialog( "close" );
					},
					"ツイートする": function() {
						
						tooManyCharacters = false;
						formFilled = false;
						
						// 正しく記入されているかチェックする
						switch (currentPostMode) {
							case 'check':
								if ($("#check_area1").val() != "")
									formFilled = true;
								
								if (postTooManyCharacters['check'])
									tooManyCharacters = true;
									
								tweet = $("#check_area2").val();
								break;
							case 'vote':
								alternativesFilled = true;
								
								$("input[name=vote_text[]]").each(function() {
									if ($(this).val() == "")
										alternativesFilled = false;
								});
								
								if (postTooManyCharacters['vote'])
									tooManyCharacters = true;
								
								if ($("#vote_area1").val() != "" && alternativesFilled)
									formFilled = true;
									
								tweet = $("#vote_area2").val();
								break;
						}
						
						data = "post_data=true&action=tweet_post&";
						data+= "contents=" + encodeURI(tweet);
						
						if (formFilled && !tooManyCharacters) {
							$("#tweetPostLoading").show();
							$.ajax ({
								type: "POST",
								data: data,
								url: "ajax.php",
								success: function (result) {
									if (result == "success")
										showMessage("ツイートしました。");
									else
										showError(result);
										
									$("#tweetPostLoading").hide();
									$("#dialog").dialog( "close" );
								}
							});
						}
						else if (tooManyCharacters) {
							alert("文字数制限を超えています。文字数を減らしてください。");
						} else {
							alert("全部のフィールドを記入して下さい。");
						}
					}
				}
			});
		}
	});
}

// 出欠確認ツイート
function attendanceCheck() {
	data = "post_data=true&action=attendance_check";
	$("#attendance_loading").html(loading_icon);
	
	$.ajax({
		type: "POST",
		url: "ajax.php",
		data: data,
		success: function (result) {
			pos = result.indexOf("|");
			
			if (pos) {
				res = result.substr(0, pos);
				
				// リスト作成に成功した場合
				if (res == "success") {
					msg = result.substr(pos + 1);
	
					showMessage(msg);
					
					$("#start_attendance_check").attr("disabled", "disabled");
					
					if ($("#leaderStatus").val() == "true") {
						$("img[name=circle]").attr("class", "pointer");
						$("img[name=circle]").attr("onclick", "onclick='updateMemberAttendanceStatus(this, 1)'");
						$("img[name=circle]").attr("src", "image/circle_icon.png");
						$("img[name=circle]").attr("title", "このメンバーを出席にする");
						
						$("img[name=cross]").attr("class", "pointer");
						$("img[name=cross]").attr("onclick", "onclick='updateMemberAttendanceStatus(this, 0)'");
						$("img[name=cross]").attr("src", "image/cross_icon.png");
						$("img[name=cross]").attr("title", "このメンバーを欠席にする");
					}
				}
				// リスト作成に失敗した場合
				else if (res == "error") {
					errorMsg = result.substr(pos + 1);
					
					showError(errorMsg);
				}
			}
			else {
				showError(result);
			}
			
			$("#attendance_loading").html("");
		}
	});
}

// 出欠画面更新
function attendanceUpdate() {
	data = "post_data=true&action=attendance_update";
	$(".attendanceStatus").html(loading_icon);
	$("input[name=updateAttendance]").attr("disabled", "disabled");
	
	$.ajax({
		type: "POST",
		url: "ajax.php",
		data: data,
		success: function (result) {
			if (result != "") {
				rows = result.split("\n");
				
				statusUpdate = false;
				
				$.each(rows, function(key, value) {
					values = value.split("|");
					
					id = values[0];
					status = values[1];
					
					$("input.attendanceUserId[value=" + id + "] ~ .attendanceStatus").html(status);
					
					statusUpdate = true;
				});	
				if (statusUpdate) {
					$("#start_attendence_check").attr("disabled", "disabled");
				}
			}
			else {
				$(".attendanceStatus").html("");
			}			

			$("input[name=updateAttendance]").removeAttr("disabled");
			
			updateAttendanceButtons();
		}
	});
}

// メンバーの出席ステータスを更新する
function updateMemberAttendanceStatus(element, status) {
	data = "post_data=true&action=member_attendance_status_update&";
	parent = $(element).parent().parent();
	user_id = $(".attendanceUserId", parent).val();
	
	data+= "user_id=" + user_id + "&status=" + status;
	
	// ロード中のアイコンを表示
	$("td[name=buttonField] img", parent).hide();
	$("td[name=buttonField] img[name=loading]", parent).show();
	$("td[name=statusField]", parent).html(loading_icon);
		
	$.ajax({
		type: "POST",
		url: "ajax.php",
		data: data,
		success: function (result) {
			pos = result.indexOf("|");
			
			if (pos) {
				res = result.substr(0, pos);
				
				// リスト作成に成功した場合
				if (res == "success") {
					pos2 = result.indexOf("|", pos + 1);
					
					id = result.substring(pos + 1, pos2);
					newStatus = result.substr(pos2 + 1);
					
					// 編集した行を探して、更新する
					$("#attendanceTable tr").each(function(i, row) {
						if ($(".attendanceUserId", row).val() == id) {
							$("td[name=statusField]", row).html(newStatus);
							
							if (newStatus == "出席")
								button = "cross";
							else
								button = "circle";
								
							$("td[name=buttonField] img", row).hide();
							$("td[name=buttonField] img[name=" + button + "]", row).show();
							
							return 0; // break
						}
					});
					
					updateAttendanceButtons();
				}
				// リスト作成に失敗した場合
				else if (res == "error") {
					errorMsg = result.substr(pos + 1);
					
					showError(errorMsg);
				}
				else {
					showError(result);
				}
			}
		}
	});
}

// 表示するボタンを更新する
function updateAttendanceButtons() {
	$("#attendanceTable tr").each(function(i, row) {
		// ヘッダーの行をスキップする
		if ($("th", row)) {
			return true; // continueの意味
		}
		
		status = $("td[name=statusField]", row).html();
		
		button = "";
		
		if (status == "出席")
			button = "cross";
		else
			button = "circle";
		
		$("td[name=buttonField] img", row).hide();
		$("td[name=buttonField] img[name=" + button + "]", row).show();
	});
}

// 履歴機能の絞り込み
function searchHistory() {
	type = $("#history_type").val();
	start_date = $("#history_start_date").val();
	end_date = $("#history_end_date").val();
	user = $("#history_user").val();
	
	data = "post_data=true&action=history_search&";
	data+= "type=" + encodeURI(type) + "&date_start=" + encodeURI(start_date) + "&";
	data+= "date_end=" + encodeURI(end_date) + "&user=" + encodeURI(user);
	
	$("tr.historyTableRow:not(.template)").remove();
	$(".noRows").hide();
	
	loadingRow = "<tr><td class=\"loadingRow\" colspan=\"5\">" + loading_icon + "</td></tr>";
	$(".historyTable").append(loadingRow);
	
	$("#historySearchButton").attr("disabled", "disabled");
	
	$.ajax({
		type: "POST",
		url: "ajax.php",
		data: data,
		success: function (result) {
			$(".loadingRow").parent().remove();
			$("#historySearchButton").removeAttr("disabled");
			
			if (result != "") {
				rows = result.split("\n");
				
				$.each(rows, function(key, row) {
					// サーバーからの返事を読み込む
					pos = row.indexOf("|");
					pos2 = row.indexOf("|", pos + 1);
					pos3 = row.indexOf("|", pos2 + 1);
					pos4 = row.indexOf("|", pos3 + 1);
					pos5 = row.indexOf("|", pos4 + 1);
					pos6 = row.indexOf("|", pos5 + 1);
					pos7 = row.indexOf("|", pos6 + 1);
					
					// 返事を変数に入れる
					type = row.substr(0, pos);
					id = row.substring(pos + 1, pos2);
					icon_url = row.substring(pos2 + 1, pos3);
					name = row.substring(pos3 + 1, pos4);
					twitter_name = row.substring(pos4 + 1, pos5);
					date_year = row.substring(pos5 + 1, pos6);
					date_time = row.substring(pos6 + 1, pos7);
					comment = row.substring(pos7 + 1);
					
					if (type && id && icon_url) {
						// 新しい行を作って、結果を入れる
						newRow = $("tr.template").clone().removeClass("template").appendTo(".historyTable");
					
						$("span[name=type]", newRow).html(type);
						$("span[name=name]", newRow).html(name);
						$("img[name=icon]", newRow).attr("src", icon_url);
						$("span[name=twitter_name]", newRow).html(twitter_name);
						$("input[name=id]", newRow).val(id);
						$("span[name=comment]", newRow).html(comment);
						$("span[name=date_year]", newRow).html(date_year);
						$("span[name=date_time]", newRow).html(date_time);
						
						newRow.click(historyRowClick);
						
						newRow.show();
					}
				});
			}
			else {
				$(".noRows").show();
			}
		}
	});
}

// 履歴の行をクリックすると、そのページに行く
function historyRowClick(event) {
	row = $(this);
	type = $("span[name=type]", row).html();
	id = $("input[name=id]", row).val();
	
	console.log(type + " " + id);
	
	loadPage(type + "表示", id);
}

// グラフ機能をグーグルAPIから読み込む
function showVoteGraph() {
	google.load("visualization", "1", {"packages" : ["corechart"], "callback" : drawChart});
}

// グラフを描画する
function drawChart() {
	var data = new google.visualization.DataTable();
	data.addColumn('string', '選択肢');
	data.addColumn('number', '票数');
	
	numRows = $("#voteTable tr[name=vote_row]").length;
	
	data.addRows(numRows);
	dataEntered = false;
	
	$("#voteTable tr[name=vote_row]").each(function(key, row) {
		$("#vote_chart").show();
		text = $("td[name=name]", row).html();
		votes = parseInt($("td[name=votes]", row).html());
		
		if (votes > 0)
			dataEntered = true;
		
		data.setValue(key, 0, text);
		data.setValue(key, 1, votes);
	});
	
	if (dataEntered) {
		$("#vote_chart").show();
		var chart = new google.visualization.PieChart(document.getElementById('vote_chart'));
		chart.draw(data, {width: 350, height: 180, title: ''});
	} else {
		$("#vote_chart").hide();
		$("#empty_vote_chart").show();
	}
}


//**********************************************************
//テンプレート画面：画面を表示しない、ラジオボタンのチェックはずす
//**********************************************************
function hide_display(){
	document.getElementsByName('Chkbox')[0].checked = false;
	document.getElementsByName('Chkbox')[1].checked = false;
	$('#check_tweet').hide();
	$('#vote_tweet').hide();
	$('#vote_number_over').hide();

}
//**********************************************************
//テンプレート画面：表示画面の変更
//**********************************************************
function display_change(){
	change = document.getElementsByName('Chkbox')
	if(change[0].checked) {
		currentPostMode = "check";
		
		$('#check_tweet').show();
		$('#vote_tweet').hide();
		add_check_text();
	}
	else if(change[1].checked) {
		currentPostMode = "vote";
		
		$('#check_tweet').hide();
		$('#vote_tweet').show();
		updateVoteText();
	}
}

//**********************************************************
//挙手テンプレート：残り文字数の表示
//**********************************************************
function add_check_text() {
	groupName = $("#group_name").val();
	inputText = $("textarea[name=check_area1]").val();

	value = "【" + groupName + "】【挙手】 " + inputText;
	
	$("textarea[name=check_area2]").val(value);

	text_length = 140 - value.length;
	if(text_length < 0){
		$("#check_length").html("文字数オーバーです");
	}
	else{
		$("#check_length").html("残り" + text_length + "文字");
	}
	$("#check_length").css("display", "block");
}

//**********************************************************
//アンケートテンプレート：残り文字数の表示
//**********************************************************
function add_vote_text() {
	groupName = $("#group_name").val();
	
	inputText = $("textarea[name=vote_area1]").val();

	value = "【" + groupName + "】【アンケート】「」「」" + inputText;
	
	$("textarea[name=vote_area2]").val(value);
//残り文字数の判断
	text_length = 140 - value.length;
	if (text_length < 0) {
		postTooManyCharacters['check'] = true;
		$("#vote_length").html("文字数オーバーです");
	}
	else {
		postTooManyCharacters['check'] = false;
		$("#vote_length").html("残り" + text_length + "文字");
	}
	$("#vote_length").css("display", "block");
}


function updateVoteText() {
	groupName = $("#group_name").val();

	tweetText = "【" + groupName + "】【アンケート】 ";

	inputText = $("textarea[name=vote_area1]").val();

	tweetText += inputText + " ";

	$("input[name=vote_text[]]").each(function(i, value) {
		voteText = $(value).val();
		tweetText += "「" + voteText + "」";
	});

	$("textarea[name=vote_area2]").val(tweetText);

	text_length = 140 - tweetText.length;
	if(text_length < 0) {
			postTooManyCharacters['vote'] = true;
			$("#vote_length").html("文字数オーバーです");
	}
	else {
		postTooManyCharacters['vote'] = false;
		$("#vote_length").html("残り" + text_length + "文字");
	}
	$("#vote_length").css("display", "block");
}
//**********************************************************
//アンケートテンプレート：選択肢の追加
//**********************************************************
function add_textbox(){
	//テキストボックスの追加
	a = $('#select');
	number = $("input[name=vote_text[]]").length;
	
	if (number < 6) {
		newRow = $("#select div.template").clone().removeClass("template");

		newText = $("input", newRow);
		newText.val("");
		
		jQuery('<img/>', {
			src: 'image/minusbutton.jpg',
			title: '選択肢を減らす',
			class: 'minusIcon',
			click: function() {
				removeTextbox(this);
			}
		}).appendTo(newRow);
		
		a.append(newRow);

		updateVoteText();
	}
	else {
		$('#vote_number_over').show();
	}
}

// アンケートのtextboxを減らす
function removeTextbox(element) {
	$(element).parent().remove();
	updateVoteText();
}

//**********************************************************:
//履歴画面datepicker
//**********************************************************:
$(function() {
	var current_open_group = -1;
	
	$( "#history_start_date" ).datepicker({
		altField: "#history_start_date",
		altFormat: "yy-mm-dd",
		dateFormat: "yy-mm-dd",
		changeMonth: true,
		changeYear: true,
		monthNamesShort: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
		dayNamesMin: ['月', '火', '水', '木', '金', '土', '日'],
		defaultDate: '1990-01-01'
	});
	
	if ($("#profile_unfilled").val() == "true") {
		tabs_locked = true;
		$( "#tabs").tabs("option", "disabled", [0, 2]);
	}
});
$(function() {
	var current_open_group = -1;
	
	$( "#history_end_date" ).datepicker({
		altField: "#history_end_date",
		altFormat: "yy-mm-dd",
		dateFormat: "yy-mm-dd",
		changeMonth: true,
		changeYear: true,
		monthNamesShort: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
		dayNamesMin: ['月', '火', '水', '木', '金', '土', '日'],
		defaultDate: '1990-01-01'
	});
	
	if ($("#profile_unfilled").val() == "true") {
		tabs_locked = true;
		$( "#tabs").tabs("option", "disabled", [0, 2]);
	}
});
